package admincow.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;

import admincow.util.ConexionBD;
import admincow.vo.PartoVO;
import admincow.vo.RazaVO;


public class RazaDAO {
	
	public RazaVO codigo(String auto) {
		RazaVO vi = new RazaVO();
		try {
			Connection con = ConexionBD.obtenerConexion();
			Statement stmt = con.createStatement();
			ResultSet rs = stmt
					.executeQuery("select max(idraza)+1 as nro from raza");
		
			if (rs.next()) {
				vi.setIdraza(rs.getInt("nro"));
			}
			    System.out.println("El error esta ahi si no pasa esto");
				rs.close();
				stmt.close();
				con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return vi;
	}
	
	public Collection<RazaVO> buscarPorNombre(String nombre){
		Collection<RazaVO> lista= new ArrayList<RazaVO>();
		System.out.println("Ingr Nombre");
		System.out.println("el nombre es "+nombre+"" );
		try{
			String query="select raza.* from raza where nombre like '%"+nombre+"%'";
			Connection con= ConexionBD.obtenerConexion();
			Statement smt=con.createStatement();
			ResultSet rs= smt.executeQuery(query);
			while(rs.next()){
				RazaVO vo= new RazaVO();
				vo.setIdraza(rs.getInt(1));
				vo.setNombre(rs.getString(2));
				vo.setDescripcion(rs.getString(3));
				lista.add(vo);
			}
			rs.close();
			smt.close();
			con.close();
		}catch (SQLException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return lista;
	}
	public void insertar(RazaVO vo){
		System.out.println("Insertar");
		String query="INSERT INTO raza (nombre,descripcion) VALUES (?,?)";
		try {
			Connection con= ConexionBD.obtenerConexion();
			PreparedStatement pstmt= con.prepareStatement(query);
			pstmt.setString(1, vo.getNombre());
			pstmt.setString(2, vo.getDescripcion());
			int i= pstmt.executeUpdate();
			if(i!=1){
				throw new SQLException("No se pudo insertar");
			}
			pstmt.close();
			con.close();
		} catch (SQLException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
	public RazaVO obtenerRazaPorId(int idRaza){
		RazaVO vo= new RazaVO();
		System.out.println("por id");
		try {
			String query="select raza.* from raza where idraza=?";
			Connection con= ConexionBD.obtenerConexion();
			PreparedStatement stmt=con.prepareStatement(query);
			stmt.setInt(1, idRaza);
			ResultSet rs= stmt.executeQuery();
			if(rs.next()){
				vo.setIdraza(rs.getInt(1));
				vo.setNombre(rs.getString(2));
				vo.setDescripcion(rs.getString(3));
			}
			rs.close();
			stmt.close();
			con.close();
		} catch (SQLException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return vo;
	}
	public void eliminar(int idRaza){
		System.out.println("Ingresamdo a eliminar");
		String query="DELETE FROM raza WHERE idraza=?";
		try {
			Connection con= ConexionBD.obtenerConexion();
			PreparedStatement pstmt=con.prepareStatement(query);
			pstmt.setInt(1, idRaza);
			int i= pstmt.executeUpdate();
			if(i!=1){
				throw new SQLException("No se pudo eliminar");
			}
			pstmt.close();
			con.close();
		} catch (SQLException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
	public RazaVO actualizar(RazaVO vo){
		System.out.println("Ingresamdo a actualizar");
		String query="update raza set nombre=?,descripcion=? where idraza=?";
		try {
			Connection con= ConexionBD.obtenerConexion();
			PreparedStatement pstm=con.prepareStatement(query);
			pstm.setString(1, vo.getNombre());
			pstm.setString(2, vo.getDescripcion());
			pstm.setInt(3, vo.getIdraza());
			int i= pstm.executeUpdate();
			if(i!=1){
				throw new SQLException("No se pudo actualizar");
			}
			pstm.close();
			con.close();
		} catch (SQLException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return vo;
	}
}
